package com.zhiche.lisa.bms.controller.utils;

import com.google.common.collect.Maps;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author: linbao
 * @date: 2019-04-24
 */
@Component
public class ExcelControllerMapCommon {

    /**
     * 收入价格Map
     *
     * @return
     */
    public Map<String, Object> getPriceIncomingMapping() {
        Map<String, Object> priceIncomingMapping = Maps.newLinkedHashMap();
        priceIncomingMapping.put("id", "序号");
        priceIncomingMapping.put("orderCode", "订单号");
        priceIncomingMapping.put("itemUid", "车架号");
        priceIncomingMapping.put("estIncomingPrice", "暂估价");
        priceIncomingMapping.put("actIncomingPrice", "执行价");
        priceIncomingMapping.put("mileage", "计价里程");
        priceIncomingMapping.put("departAdressName", "启运地");
        priceIncomingMapping.put("destAdderssName", "目的地");
        return priceIncomingMapping;
    }

    /**
     * 应付价格
     *
     * @return
     */
    public Map<String, Object> getBillPurchaseMapping() {
        Map<String, Object> billPurchaseMapping = Maps.newLinkedHashMap();
        billPurchaseMapping.put("billCode", "账单编号");
        billPurchaseMapping.put("payeeName", "承运方");
        billPurchaseMapping.put("orderDate", "账单日期");
        billPurchaseMapping.put("grossAmt", "结算金额");
        billPurchaseMapping.put("billStatuName", "账单状态");
        billPurchaseMapping.put("billPropertyName", "账单类型");
        billPurchaseMapping.put("isAffirmVal", "是否开票");
        billPurchaseMapping.put("num", "车辆数");
        billPurchaseMapping.put("creator", "创建人");
        billPurchaseMapping.put("gmtCreate", "创建时间");
        return billPurchaseMapping;
    }

    /**
     * 支出价格
     *
     * @return
     */
    public Map<String, Object> getPricePurchaseMapping() {
        Map<String, Object> pricePurchaseMapping = Maps.newLinkedHashMap();
        pricePurchaseMapping.put("shipmentCode", "装车单编号");
        pricePurchaseMapping.put("shipTaskCode", "运输任务编号");
        pricePurchaseMapping.put("itemUid", "货物唯一编号");
        pricePurchaseMapping.put("lspName", "承运商名称");
        pricePurchaseMapping.put("fleetName", "车队名称");
        pricePurchaseMapping.put("driverName", "司机姓名");
        pricePurchaseMapping.put("carrierPlate", "牵引车牌号码");
        pricePurchaseMapping.put("departAdressName", "起运地名称");
        pricePurchaseMapping.put("destAdderssName", "目的地名称");
        pricePurchaseMapping.put("extPurchasePrice", "支付暂估价");
        pricePurchaseMapping.put("actPurchasePrice", "支付实际价格");
        pricePurchaseMapping.put("mileage", "计价里程");
        pricePurchaseMapping.put("overflowRate", "溢价比");
        pricePurchaseMapping.put("isEnable", "是否生效");
        return pricePurchaseMapping;
    }

    /**
     * 考核单
     *
     * @return
     */
    public Map<String, Object> getExoprtFeeAssessmentMapping() {
        Map<String, Object> exoprtFeeAssessmentMapping = Maps.newLinkedHashMap();
        exoprtFeeAssessmentMapping.put("assessCode", "考核单号");
        exoprtFeeAssessmentMapping.put("assessMonthStr", "考核月");
        exoprtFeeAssessmentMapping.put("lspName", "分供方");
        exoprtFeeAssessmentMapping.put("fleetTeye", "承运人类型");
        exoprtFeeAssessmentMapping.put("fleetStatus", "实际承运人");
        exoprtFeeAssessmentMapping.put("transportTypeName", "运输方式");
        exoprtFeeAssessmentMapping.put("driverPhone", "司机手机号");
        exoprtFeeAssessmentMapping.put("sendCarPass", "送车证号");
        exoprtFeeAssessmentMapping.put("invoiceTypeName", "类型");
        exoprtFeeAssessmentMapping.put("assessItem", "考核项目");
        exoprtFeeAssessmentMapping.put("assessCause", "考核原因");
        exoprtFeeAssessmentMapping.put("assessSum", "考核金额");
        exoprtFeeAssessmentMapping.put("mitigateSum", "减免金额");
        exoprtFeeAssessmentMapping.put("mitigateCause", "减免原因");
        exoprtFeeAssessmentMapping.put("assessDep", "考核登记部门");
        exoprtFeeAssessmentMapping.put("descr", "备注说明");
        return exoprtFeeAssessmentMapping;
    }

    /**
     * 考核
     *
     * @return
     */
    public Map<String, Object> getFeeAssessmentMapping() {
        Map<String, Object> feeAssessmentMapping = Maps.newLinkedHashMap();
        feeAssessmentMapping.put("assessCode", "考核单号");
        feeAssessmentMapping.put("assessMonthStr", "考核月");
        feeAssessmentMapping.put("lspName", "分供方");
        feeAssessmentMapping.put("fleetTeye", "承运人类型");
        feeAssessmentMapping.put("fleetStatus", "实际承运人");
        feeAssessmentMapping.put("transportTypeName", "运输方式");
        feeAssessmentMapping.put("driverPhone", "司机手机号");
        feeAssessmentMapping.put("sendCarPass", "送车证号");
        feeAssessmentMapping.put("invoiceTypeName", "类型");
        feeAssessmentMapping.put("assessItem", "考核项目");
        feeAssessmentMapping.put("assessCause", "考核原因");
        feeAssessmentMapping.put("assessSum", "考核金额");
        feeAssessmentMapping.put("mitigateSum", "减免金额");
        feeAssessmentMapping.put("mitigateCause", "减免原因");
        feeAssessmentMapping.put("assessDep", "考核登记部门");
        feeAssessmentMapping.put("descr", "备注说明");
        return feeAssessmentMapping;
    }

    /**
     * 考核
     *
     * @return
     */
    public Map<String, Object> getFeeAssessExportMapping() {
        Map<String, Object> feeAssessmentMapping = getFeeAssessmentMapping();
        feeAssessmentMapping.put("isPutStr", "是否挂起");
        feeAssessmentMapping.put("isHangStr", "是否发布");
        feeAssessmentMapping.put("closeFlagStr", "是否关闭");
        feeAssessmentMapping.put("performSum", "已执行金额");
        feeAssessmentMapping.put("balanceSum", "剩余金额");
        feeAssessmentMapping.put("bmsSum", "bms执行金额");
        feeAssessmentMapping.put("bmsBalance", "bms执行剩余金额");
        feeAssessmentMapping.put("bmsInvoiceId", "bms的开票申请单号");
        feeAssessmentMapping.put("gmtCreate", "创建时间");
        return feeAssessmentMapping;
    }


    /**
     * 承运商账单
     *
     * @return
     */
    public Map<String, Object> getCustomentPayableBillMapping() {
        Map<String, Object> customentPayableBillMapping = Maps.newLinkedHashMap();
        customentPayableBillMapping.put("waybillDtlId", "系统运单号");
        customentPayableBillMapping.put("vin", "车架号");
        customentPayableBillMapping.put("ciamsId", "业务主体");
        customentPayableBillMapping.put("payerName", "承运方");
        customentPayableBillMapping.put("fleetName", "车队");
        customentPayableBillMapping.put("driverName", "司机名称");
        customentPayableBillMapping.put("vehicleTypeCode", "车型名称");
        customentPayableBillMapping.put("startProvince", "起运省");
        customentPayableBillMapping.put("startCity", "起运市");
        customentPayableBillMapping.put("startCounty", "起运区");
        customentPayableBillMapping.put("startAddr", "起运地");
        customentPayableBillMapping.put("endProvince", "目的省");
        customentPayableBillMapping.put("endCity", "目的市");
        customentPayableBillMapping.put("endCounty", "目的区");
        customentPayableBillMapping.put("endAddr", "目的地");
        customentPayableBillMapping.put("orderDate", "发运时间");
        customentPayableBillMapping.put("receiptDate", "回单时间");
        customentPayableBillMapping.put("num", "订单数量");
        customentPayableBillMapping.put("actualPrice", "结算单价");
        customentPayableBillMapping.put("kilometre", "公里数");
        return customentPayableBillMapping;
    }

    /**
     * 客户应收账单
     *
     * @return
     */
    public Map<String, Object> getCustomentBillMapping() {
        Map<String, Object> customentBillMapping = Maps.newLinkedHashMap();
        customentBillMapping.put("dispatchCode", "指令号");
        customentBillMapping.put("shipCode", "主运单表码");
        customentBillMapping.put("customerCode", "客户运单号");
        customentBillMapping.put("ciams", "业务主体");
        customentBillMapping.put("costName", "费用类型名称");
        customentBillMapping.put("vehicleTypeName", "车型名称");
        customentBillMapping.put("transModel", "运输方式");
        customentBillMapping.put("capName", "运力名称");
        customentBillMapping.put("driverName", "司机名字");
        customentBillMapping.put("vin", "车架/车牌号");
        customentBillMapping.put("plateNum", "车牌号");
        customentBillMapping.put("startAddr", "起运地");
        customentBillMapping.put("endAddr", "目的地");
        customentBillMapping.put("actualPrice", "单价");
        customentBillMapping.put("kilometre", "公里数");
        customentBillMapping.put("otherMoney", "其他费用");
        customentBillMapping.put("shipTime", "发运时间");
        customentBillMapping.put("receiptDate", "回单时间");
        customentBillMapping.put("num", "数量");
        return customentBillMapping;
    }

    /**
     * 应收款项
     *
     * @return
     */
    public Map<String, Object> getSplitMapping() {
        Map<String, Object> splitMapping = Maps.newLinkedHashMap();
        splitMapping.putAll(getCustomentBillMapping());
        splitMapping.remove("kilometre");
        splitMapping.remove("actualPrice");
        splitMapping.remove("otherMoney");
        return splitMapping;
    }

    /**
     * 应收款项
     *
     * @return
     */
    public Map<String, Object> getBillIncomingItemMapping() {
        Map<String, Object> billIncomingItemMapping = Maps.newLinkedHashMap();
        billIncomingItemMapping.put("orderCode", "订单号");
        billIncomingItemMapping.put("orderDtlId", "订单号明细id");
        billIncomingItemMapping.put("waybillId", "OTM运单号");
        billIncomingItemMapping.put("waybillDtlId", "OTM运单号明细");
        billIncomingItemMapping.put("typeId", "费用类型ID");
        billIncomingItemMapping.put("typeName", "费用名称( 保留同步过来的原始费用 )");
        billIncomingItemMapping.put("transModel", "运输方式");
        billIncomingItemMapping.put("vehicleTypeCode", "车型编码");
        billIncomingItemMapping.put("vehicleTypeName", "车型名称");
        billIncomingItemMapping.put("vin", "车架/车牌号");
        billIncomingItemMapping.put("startAddr", "起运地名称");
        billIncomingItemMapping.put("startAddrCode", "起运地编码");
        billIncomingItemMapping.put("endAddr", "目的地");
        billIncomingItemMapping.put("endAddrCode", "目的地编码");
        billIncomingItemMapping.put("contractType", "合同类型");
        billIncomingItemMapping.put("contractCode", "合同编码");
        billIncomingItemMapping.put("payerId", "付款方ID");
        billIncomingItemMapping.put("payeeId", "收款方ID");
        billIncomingItemMapping.put("estPrice", "预估单价");
        billIncomingItemMapping.put("actualPrice", "单价");
        billIncomingItemMapping.put("kilometre", "公里数");
        billIncomingItemMapping.put("num", "数量");
        billIncomingItemMapping.put("estAmt", "预估金额");
        billIncomingItemMapping.put("actualAmt", " 结算金额(总金额");
        billIncomingItemMapping.put("tenantId", "租户ID");
        billIncomingItemMapping.put("orderDate", "下单时间");
        billIncomingItemMapping.put("receiptDate", "回单时间");
        billIncomingItemMapping.put("loadStatus", "运单单状态：10-已发运、20-已回单、30-已运抵");
        billIncomingItemMapping.put("status", "状态：0、新增 1、已出账单");
        billIncomingItemMapping.put("gmtModify", "修改时间");
        billIncomingItemMapping.put("gmtCreate", "创建时间");
        billIncomingItemMapping.put("creator", "创建人");
        billIncomingItemMapping.put("proprietor", "拥有人");
        billIncomingItemMapping.put("costId", "关联费用id");
        return billIncomingItemMapping;
    }

    /**
     * 应收账单
     *
     * @return
     */
    public Map<String, Object> getBillIncomingMapping() {
        Map<String, Object> billIncomingMapping = Maps.newLinkedHashMap();
        billIncomingMapping.put("billCode", "账单编号");
        billIncomingMapping.put("payerName", "客户");
        billIncomingMapping.put("orderDate", "出账日期");
        billIncomingMapping.put("grossAmt", "账单金额");
        billIncomingMapping.put("billStatuName", "账单状态");
        billIncomingMapping.put("isAffirmVal", "是否开票");
        billIncomingMapping.put("num", "订单数");
        billIncomingMapping.put("creator", "创建人");
        billIncomingMapping.put("gmtCreate", "创建时间");
        return billIncomingMapping;
    }

    /**
     * 应付价格明细
     *
     * @return
     */
    public Map<String, Object> getBillPurchaseItemMapping() {
        Map<String, Object> billPurchaseItemMapping = Maps.newLinkedHashMap();
        billPurchaseItemMapping.put("payApplyCode", "支付申请号");
        billPurchaseItemMapping.put("orderCode", "指令号");
        billPurchaseItemMapping.put("cusWaybill", "客户运单号");
        billPurchaseItemMapping.put("ciamsId", "业务主体");
        billPurchaseItemMapping.put("vehicleTypeName", "车牌");
        billPurchaseItemMapping.put("vehicleTypeCode", "车型编码");
        billPurchaseItemMapping.put("waybillId", "装车单号");
        billPurchaseItemMapping.put("waybillDtlId", "装车单明细");
        billPurchaseItemMapping.put("vehicleTypeCode", "车型名称");
        billPurchaseItemMapping.put("vin", "车架/车牌号");
        billPurchaseItemMapping.put("startAddr", "起运地");
        billPurchaseItemMapping.put("startName", "起运地名称");
        billPurchaseItemMapping.put("endAddr", "目的地");
        billPurchaseItemMapping.put("endName", "目的地名称");
        billPurchaseItemMapping.put("contractTypeName", "合同类型");
        billPurchaseItemMapping.put("contractCode", "合同编码");
        billPurchaseItemMapping.put("payerName", "付款方名称");
        billPurchaseItemMapping.put("payeeName", "分供方名称");
        billPurchaseItemMapping.put("driverName", "司机名称");
        billPurchaseItemMapping.put("fleetName", "车队名称");
        billPurchaseItemMapping.put("estPrice", "预估单价");
        billPurchaseItemMapping.put("actualPrice", "单价");
        billPurchaseItemMapping.put("kilometre", "公里数");
        billPurchaseItemMapping.put("num", "数量");
        billPurchaseItemMapping.put("sdOtherExpensiseAmt", "人送其他费用金额");
        billPurchaseItemMapping.put("estAmt", "预估金额");
        billPurchaseItemMapping.put("actualAmt", "结算金额( 总金额 )");
        billPurchaseItemMapping.put("orderDate", "下单时间");
        billPurchaseItemMapping.put("receiptDate", "回单时间");
        return billPurchaseItemMapping;
    }

    /**
     * 慧运车人送账单明细
     *
     * @return
     */
    public Map<String, Object> getBillPurchaseForHuiYunCarItemMapping() {
        Map<String, Object> billPurchaseForHuiYunCarItemMapping = Maps.newLinkedHashMap();
        billPurchaseForHuiYunCarItemMapping.putAll(getBillPurchaseItemMapping());
        billPurchaseForHuiYunCarItemMapping.remove("estPrice");
        billPurchaseForHuiYunCarItemMapping.remove("estAmt");
        billPurchaseForHuiYunCarItemMapping.put("vcorderno", "送车证号");
        billPurchaseForHuiYunCarItemMapping.put("oilBaPay", "应充卡油费");
        billPurchaseForHuiYunCarItemMapping.put("cashBaPay", "劳务价");
        billPurchaseForHuiYunCarItemMapping.put("currentOilPrice", "当前油价");
        billPurchaseForHuiYunCarItemMapping.put("firstOilTotal", "第一桶油费");
        billPurchaseForHuiYunCarItemMapping.put("firstOilCapacity", "第一桶油量");
        return billPurchaseForHuiYunCarItemMapping;
    }

    /**
     * 应收款项
     *
     * @return
     */
    public Map<String, Object> getArFundMapping() {
        Map<String, Object> arFundMapping = Maps.newLinkedHashMap();
        arFundMapping.put("withhold", "扣款项");
        arFundMapping.put("lspName", "承运商");
        arFundMapping.put("fleetName", "车队");
        arFundMapping.put("driverName", "司机名称");
        arFundMapping.put("sum", "金额");
        arFundMapping.put("withholdWay", "扣款方式");
        return arFundMapping;
    }

    /**
     * 支付申请
     *
     * @return
     */
    public Map<String, Object> getPayApplyMapping() {
        Map<String, Object> payApplyMapping = Maps.newLinkedHashMap();
        payApplyMapping.put("payApplyCode", "支付申请单号");
        payApplyMapping.put("lspName", "承运商");
        payApplyMapping.put("billSum", "总金额(元)");
        payApplyMapping.put("executeSum", "已排款金额(元)");
        payApplyMapping.put("noExecuteSum", "未排款金额(元)");
        payApplyMapping.put("oilErPaySum", "油卡尾款剩余金额");
        payApplyMapping.put("shouldReceiptDate", "应付款日期");
        return payApplyMapping;
    }


    /**
     * 报价单明细
     *
     * @return
     */
    public Map<String, Object> getQuoteDtlMapping() {
        Map<String, Object> quoteDtlMapping = Maps.newLinkedHashMap();
        quoteDtlMapping.put("startCity", "起运市");
        quoteDtlMapping.put("startAddr", "起运地");
        quoteDtlMapping.put("endProvince", "目的省");
        quoteDtlMapping.put("endCity", "目的市");
        quoteDtlMapping.put("endCounty", "目的区");
        quoteDtlMapping.put("transTypeName", "运输方式");
        quoteDtlMapping.put("client", "所属客户");
        quoteDtlMapping.put("vehicleTypeName", "车型名称");
        quoteDtlMapping.put("quotation_price", "报价单价");
        quoteDtlMapping.put("quotation_mileage", "报价公里数");
        return quoteDtlMapping;
    }

    /**
     * 报价单明细
     *
     * @return
     */
    public Map<String, Object> getFeePayableMapping() {
        Map<String, Object> feePayableMapping = Maps.newLinkedHashMap();
        feePayableMapping.put("orderCode", "指令编号");
        feePayableMapping.put("waybillId", "装车单号");
        feePayableMapping.put("waybillDtlId", "系统运单号");
        feePayableMapping.put("cusWaybill", "客户运单号");
        feePayableMapping.put("cusOrderNo", "客户订单号");
        feePayableMapping.put("ciamsId", "业务主体");
        feePayableMapping.put("vehicleTypeName", "车牌");
        feePayableMapping.put("vin", "车架/车牌号");
        feePayableMapping.put("transTypeName", "运输方式");
        feePayableMapping.put("vehicleTypeCode", "车系");
        feePayableMapping.put("payerName", "承运商");
        feePayableMapping.put("fleetName", "车队名称");
        feePayableMapping.put("driverName", "司机名称");
        feePayableMapping.put("startCity", "起运市");
        feePayableMapping.put("startAddr", "起运地");
        feePayableMapping.put("startName", "起运名称");
        feePayableMapping.put("endProvince", "目的省");
        feePayableMapping.put("endCity", "目的市");
        feePayableMapping.put("endCounty", "目的区");
        feePayableMapping.put("endAddr", "目的地");
        feePayableMapping.put("endName", "目的名称");
        feePayableMapping.put("estPrice", "预估单价");
        feePayableMapping.put("actualPrice", "单价");
        feePayableMapping.put("kilometre", "公里数");
        feePayableMapping.put("estAmt", "预估总金额");
        feePayableMapping.put("actualAmt", "结算总金额");
        feePayableMapping.put("sdOtherExpensiseAmt", "人送其他费用金额");
        feePayableMapping.put("loadStatus", "运单状态");
        feePayableMapping.put("isPayStr", "是否支付申请");
        feePayableMapping.put("payCode", "支付申请单号");
        feePayableMapping.put("payDate", "支付申请时间");
        feePayableMapping.put("isArrPayStr", "是否排款");
        feePayableMapping.put("arrPayCode", "排款单号");
        feePayableMapping.put("isPaymentStr", "是否付款");
        feePayableMapping.put("paymentDate", "付款确认时间");
        feePayableMapping.put("orderDate", "发运时间");
        feePayableMapping.put("sourceSysStr", "来源系统");
        return feePayableMapping;
    }


    /**
     * Otm应付账款数据对应导入映射
     *
     * @return
     */
    public Map<String, Object> getFeePayApplyByOtmExcelMapping() {
        Map<String, Object> feePayApplyByOtmExcelMapping = Maps.newLinkedHashMap();
        feePayApplyByOtmExcelMapping.put("orderCode", "调度指令");
        feePayApplyByOtmExcelMapping.put("waybillId", "系统订单号");
        feePayApplyByOtmExcelMapping.put("cusWaybill", "客户运单号");
        feePayApplyByOtmExcelMapping.put("waybillDtlId", "发运流水号");
        feePayApplyByOtmExcelMapping.put("orderDate", "发运日期");
        feePayApplyByOtmExcelMapping.put("receiptDate", "回单日期");
        feePayApplyByOtmExcelMapping.put("fleetName", "承运车队");
        feePayApplyByOtmExcelMapping.put("vehicleTypeName", "车牌号");
        feePayApplyByOtmExcelMapping.put("num", "发运数量");
        feePayApplyByOtmExcelMapping.put("vehicleTypeCode", "货物型号");
        feePayApplyByOtmExcelMapping.put("startAddr", "起运地");
        feePayApplyByOtmExcelMapping.put("endAddr", "目的地");
        feePayApplyByOtmExcelMapping.put("loadStatusName", "回单状态");
        feePayApplyByOtmExcelMapping.put("transTypeName", "配板类型");
        feePayApplyByOtmExcelMapping.put("payerName", "分供方名称");
        feePayApplyByOtmExcelMapping.put("canProvisional", "支付是否暂估");
        feePayApplyByOtmExcelMapping.put("estPrice", "单价");
        feePayApplyByOtmExcelMapping.put("estAmt", "小计");
        feePayApplyByOtmExcelMapping.put("kilometre", "公里数");
        return feePayApplyByOtmExcelMapping;
    }

    /**
     * 预付账单
     *
     * @return
     */
    public Map<String, Object> getPrepayBillMapping() {
        Map<String, Object> prepayBillMapping = Maps.newLinkedHashMap();
        prepayBillMapping.put("orderCode", "指令编号");
        prepayBillMapping.put("waybillId", "装车单号");
        prepayBillMapping.put("waybillDtlId", "系统运单号");
        prepayBillMapping.put("vin", "车架");
        prepayBillMapping.put("vehicleTypeName", "车牌");
        prepayBillMapping.put("lspName", "承运商");
        prepayBillMapping.put("fleetName", "车队");
        prepayBillMapping.put("driverName", "司机");
        prepayBillMapping.put("startAddr", "起运地");
        prepayBillMapping.put("endAddr", "目的地");
        prepayBillMapping.put("actualPrice", "单价");
        prepayBillMapping.put("kilometre", "公里数");
        prepayBillMapping.put("actualAmt", "总金额");
        prepayBillMapping.put("prepayOil", "油费预付");
        prepayBillMapping.put("prepaySum", "预付金额");
        prepayBillMapping.put("gmtCreate", "创建时间");
        return prepayBillMapping;
    }

    /**
     * 补贴
     *
     * @return
     */
    public Map<String, Object> getFeeRewardTemplateMapping() {
        Map<String, Object> feeRewardTemplateMapping = Maps.newLinkedHashMap();
        feeRewardTemplateMapping.put("redCode", "奖赏项编码");
        feeRewardTemplateMapping.put("redMonth", "奖赏月");
        feeRewardTemplateMapping.put("lspName", "分供方名称");
        feeRewardTemplateMapping.put("fleetTypeName", "承运人类型");
        feeRewardTemplateMapping.put("fleetStatus", "实际承运人");
        feeRewardTemplateMapping.put("transportTypeName", "运输方式");
        feeRewardTemplateMapping.put("driverPhone", "司机手机号");
        feeRewardTemplateMapping.put("sendCarPass", "送车证号");
        feeRewardTemplateMapping.put("invoiceTypeName", "类型");
        feeRewardTemplateMapping.put("redWay", "奖赏方式");
        feeRewardTemplateMapping.put("redItem", "奖赏项目");
        feeRewardTemplateMapping.put("redCause", "奖赏原因");
        feeRewardTemplateMapping.put("redSum", "奖赏金额");
        feeRewardTemplateMapping.put("descr", "备注说明");
        return feeRewardTemplateMapping;
    }

    /**
     * 补贴
     *
     * @return
     */
    public Map<String, Object> getFeeRewardDateMapping() {
        Map<String, Object> feeRewardDateMapping = Maps.newLinkedHashMap();
        feeRewardDateMapping.putAll(getFeeRewardTemplateMapping());
        feeRewardDateMapping.put("isPutVal", "是否上传");
        feeRewardDateMapping.put("performSum", "已执行金额");
        feeRewardDateMapping.put("balanceSum", "剩余金额");
        feeRewardDateMapping.put("isHangVal", "是否挂起");
        feeRewardDateMapping.put("closeFlagStr", "是否关闭");
        feeRewardDateMapping.put("bmsSum", "bms执行金额");
        feeRewardDateMapping.put("bmsBalance", "bms执行剩余金额");
        feeRewardDateMapping.put("bmsInvoiceId", "bms的开票申请单号");
        feeRewardDateMapping.put("gmtCreate", "创建时间");
        return feeRewardDateMapping;
    }

    /**
     * 标准价
     *
     * @return
     */
    public Map<String, Object> getStaPriceMapping() {
        Map<String, Object> staPriceMapping = Maps.newLinkedHashMap();
        staPriceMapping.put("id", "唯一标识");
        staPriceMapping.put("sLocZone", "起运市");
        staPriceMapping.put("sLocZone3", "起运区");
        staPriceMapping.put("sLocLocationName", "起运地");
        staPriceMapping.put("dLocZone1", "目的省");
        staPriceMapping.put("dLocZone2", "目的市");
        staPriceMapping.put("dLocZone3", "目的区");
        staPriceMapping.put("dLocLocationName", "目的地");
        staPriceMapping.put("transportNodeGid", "运输方式");
        staPriceMapping.put("attribute20", "所属客户");
        staPriceMapping.put("stdModelGroup1", "车型名称");
        staPriceMapping.put("standPrice", "报价单价");
        staPriceMapping.put("kilometre", "报价公里数");
        staPriceMapping.put("price", "标准单价");
        staPriceMapping.put("contractMiles", "标准公里数");
        return staPriceMapping;
    }


    /**
     * 预付账单map
     *
     * @return
     */
    public Map<String, Object> getPertrolOilPrepayBillMapping() {
        Map<String, Object> pertrolOilPrepayBillMapping = Maps.newLinkedHashMap();
        pertrolOilPrepayBillMapping.put("orderCode", "指令编号");
        pertrolOilPrepayBillMapping.put("waybillId", "装车单号");
        pertrolOilPrepayBillMapping.put("waybillDtlId", "系统运单号");
        pertrolOilPrepayBillMapping.put("cusWaybill", "客户运单号");
        pertrolOilPrepayBillMapping.put("vin", "车架/车牌");
        pertrolOilPrepayBillMapping.put("lspName", "承运商");
        pertrolOilPrepayBillMapping.put("fleetName", "车队");
        pertrolOilPrepayBillMapping.put("driverName", "司机");
        pertrolOilPrepayBillMapping.put("vcorderno", "司机编号");
        pertrolOilPrepayBillMapping.put("startAddr", "起运地");
        pertrolOilPrepayBillMapping.put("endAddr", "目的地");
        pertrolOilPrepayBillMapping.put("firstOilCapacity", "第一桶油量");
        pertrolOilPrepayBillMapping.put("actualPrice", "单价");
        pertrolOilPrepayBillMapping.put("kilometre", "公里数");
        pertrolOilPrepayBillMapping.put("actualAmt", "总金额");
        pertrolOilPrepayBillMapping.put("prepayOil", "油费预付");
        pertrolOilPrepayBillMapping.put("prepaySum", "预付金额");
        pertrolOilPrepayBillMapping.put("pertrolOilPrice", "加油站油价");
        pertrolOilPrepayBillMapping.put("pertrolOilStatusStr", "加油确认状态");
        pertrolOilPrepayBillMapping.put("pertrolOilDateStr", "加油确认时间");
        pertrolOilPrepayBillMapping.put("gmtCreate", "创建时间");
        return pertrolOilPrepayBillMapping;
    }


    /**
     * 报价单明细
     *
     * @return
     */
    public Map<String, Object> getQuoteExpandExport() {
        Map<String, Object> quoteExpandExport = Maps.newLinkedHashMap();
        quoteExpandExport.put("subName", "分供方明细");
        quoteExpandExport.put("effectiveDate", "生效日期");
        quoteExpandExport.put("invalidDate", "失效日期");
        quoteExpandExport.put("startAddr", "起运地");
        quoteExpandExport.put("startCity", "起运市");
        quoteExpandExport.put("startCounty", "起运区");
        quoteExpandExport.put("endProvince", "目的省");
        quoteExpandExport.put("endCity", "目的市");
        quoteExpandExport.put("endCounty", "目的区");
        quoteExpandExport.put("endAddr", "目的地");
        quoteExpandExport.put("client", "业务主体");
        quoteExpandExport.put("transTypeName", "运输方式");
        quoteExpandExport.put("vehicleTypeName", "车系名称");
        quoteExpandExport.put("quotationPrice", "报价单价");
        quoteExpandExport.put("quotationMileage", "报价公里数");
        quoteExpandExport.put("standardPrice", "标准单价");
        quoteExpandExport.put("standardMileage", "标准公里数");
        quoteExpandExport.put("premium", "溢价比");
        quoteExpandExport.put("status", "状态");
        quoteExpandExport.put("gmtCreate", "创建时间");
        return quoteExpandExport;
    }


    /**
     * 支付申请
     *
     * @return
     */
    public Map<String, Object> getPayApplyExpandMapping() {
        Map<String, Object> payApplyExpandMapping = Maps.newLinkedHashMap();
        payApplyExpandMapping.put("lspName", "承运商名称");
        payApplyExpandMapping.put("payApplyCode", "支付申请单号");
        payApplyExpandMapping.put("applyDate", "申请日期");
        payApplyExpandMapping.put("billSum", "应付金额");
        payApplyExpandMapping.put("oilPaySum", "预付油卡");
        payApplyExpandMapping.put("cashPaySum", "预付现金");
        payApplyExpandMapping.put("premium", "保险");
        payApplyExpandMapping.put("chargeSum", "考核罚款金额");
        payApplyExpandMapping.put("incSum", "其他补贴金额");
        payApplyExpandMapping.put("totalChargeSum", "扣款总金额");
        payApplyExpandMapping.put("otherSum", "其他");
        payApplyExpandMapping.put("paidSum", "预付合计");
        payApplyExpandMapping.put("paymentSum", "实付运费");
        payApplyExpandMapping.put("cashBaPaySum", "实付现金");
        payApplyExpandMapping.put("oilBaPaySum", "实付油卡");
        payApplyExpandMapping.put("bankName", "银行账户");
        payApplyExpandMapping.put("bankCode", "银行账号");
        return payApplyExpandMapping;
    }

    /**
     * 预付账单
     *
     * @return
     */
    public Map<String, Object> getPrepayBillOilMapping() {
        Map<String, Object> prepayBillMapping = getPrepayBillMapping();
        prepayBillMapping.remove("gmtCreate");
        prepayBillMapping.remove("prepaySum");
        prepayBillMapping.remove("prepayOil");
        prepayBillMapping.remove("actualAmt");
        prepayBillMapping.remove("kilometre");

        prepayBillMapping.put("estPrice", "暂估单价");
        prepayBillMapping.put("kilometre", "公里数");
        prepayBillMapping.put("actualAmt", "总金额");
        prepayBillMapping.put("estAmt", "暂估总金额");
        prepayBillMapping.put("prepaySum", "预付金额");
        prepayBillMapping.put("prepayTypeStr", "预付方式");
        prepayBillMapping.put("statusStr", "状态");
        prepayBillMapping.put("gmtCreateStr", "创建时间");
        return prepayBillMapping;
    }

    /**
     * 人送车型对照
     *
     * @return
     */
    public Map<String, Object> getSdVehicleMap() {
        Map<String, Object> sdVehicleContMap = Maps.newLinkedHashMap();
        sdVehicleContMap.put("stVehicle", "标准车型");
        sdVehicleContMap.put("cnVehicle", "合同车型");
        return sdVehicleContMap;
    }

    /**
     * 人送基础信息
     *
     * @return
     */
    public Map<String, Object> getSdBaseDataInfoTemplateMap(boolean isImport) {
        Map<String, Object> sdBaseDataInfoMap = Maps.newLinkedHashMap();
        sdBaseDataInfoMap.put("fleetName", "车队名称");
        sdBaseDataInfoMap.put("linkFlagStr", "油价联动");
        sdBaseDataInfoMap.put("priorityStr", "优先级");
        sdBaseDataInfoMap.put("priceModelStr", "价格模式");
        sdBaseDataInfoMap.put("cashPrepayRate", "现金预付比例");
        sdBaseDataInfoMap.put("cashFinalRate", "现金尾款比例");
        sdBaseDataInfoMap.put("oilPrepayRate", "油卡预付比例");
        sdBaseDataInfoMap.put("oilFinalRate", "油卡尾款比例");
        sdBaseDataInfoMap.put("gasolinePrice", "92#汽油价格");
        sdBaseDataInfoMap.put("dieselPrice", "0#柴油价格");
        mapCommon(sdBaseDataInfoMap, isImport);
        return sdBaseDataInfoMap;
    }

    /**
     * 人送传统价格
     *
     * @return
     */
    public Map<String, Object> getSdTraditionPriceExcelTemplateMap(boolean isImport) {
        Map<String, Object> sdTraditionPricMap = Maps.newLinkedHashMap();
        startAndEndCommonInfo(sdTraditionPricMap);
        sdTraditionPricMap.put("mileage", "里程");
        sdTraditionPricMap.put("price", "单价");
        sdTraditionPricMap.put("contractVehicle", "合同车型名称");
        mapCommon(sdTraditionPricMap, isImport);
        return sdTraditionPricMap;
    }

    /**
     * 人送一口价
     *
     * @return
     */
    public Map<String, Object> getSdFixedPriceExcelTemplateMap(boolean isImport) {
        Map<String, Object> sdFixedPriceMap = Maps.newLinkedHashMap();
        startAndEndCommonInfo(sdFixedPriceMap);
        sdFixedPriceMap.put("contractVehicle", "合同车型");
        sdFixedPriceMap.put("price", "价格");
        mapCommon(sdFixedPriceMap, isImport);
        return sdFixedPriceMap;
    }

    /**
     * 人送车型对照
     *
     * @return
     */
    public Map<String, Object> getSdSdVehicleContrastTemplateMap() {
        Map<String, Object> sdVehicleContrastMap = Maps.newLinkedHashMap();
        sdVehicleContrastMap.put("stVehicle", "标准车型");
        sdVehicleContrastMap.put("cnVehicle", "合同车型");
        sdVehicleContrastMap.put("oilTypeStr", "燃油类型");
        return sdVehicleContrastMap;
    }

    /**
     * 人送其他费用
     *
     * @return
     */
    public Map<String, Object> getSdOtherExpensisesTmplateMap(boolean isImport) {
        Map<String, Object> sdOtherExpensisesMap = Maps.newLinkedHashMap();
        startAndEndCommonInfo(sdOtherExpensisesMap);
        sdOtherExpensisesMap.put("priceType", "费用类型");
        sdOtherExpensisesMap.put("contractVehicle", "合同车型");
        sdOtherExpensisesMap.put("grossAmount", "总金额");
        mapCommon(sdOtherExpensisesMap, isImport);
        return sdOtherExpensisesMap;
    }

    /**
     * 通用字段
     *
     * @param commonMap
     */
    private void startAndEndCommonInfo(Map<String, Object> commonMap) {
        commonMap.put("fleetName", "车队名称");
        commonMap.put("startProvince", "起运省");
        commonMap.put("startCity", "起运市");
        commonMap.put("startCounty", "起运区");
        commonMap.put("startName", "起运地");
        commonMap.put("endProvince", "目的省");
        commonMap.put("endCity", "目的市");
        commonMap.put("endCounty", "目的区");
        commonMap.put("endName", "目的地");
    }

    private void mapCommon(Map<String, Object> commonMap, boolean isImport) {
        if (isImport) {
            commonMap.put("effectiveDate", "生效日期");
            commonMap.put("invalidDate", "失效日期");
        } else {
            commonMap.put("statusStr", "状态");
            commonMap.put("effectiveDateStr", "生效日期");
            commonMap.put("invalidDateStr", "失效日期");
        }
    }

    /**
     * 报价单明细
     *
     * @return
     */
    public Map<String, Object> getNewQuoteExcelTemplate(boolean isFee) {
        Map<String, Object> newQuoteMap = Maps.newLinkedHashMap();
        if (isFee) {
            newQuoteMap.put("feeId", "唯一标识");
        }
        newQuoteMap.put("startCity", "起运市");
        newQuoteMap.put("startCounty", "起运区");
        newQuoteMap.put("startAddr", "起运地");
        newQuoteMap.put("endProvince", "目的省");
        newQuoteMap.put("endCity", "目的市");
        newQuoteMap.put("endCounty", "目的区");
        newQuoteMap.put("endAddr", "目的地");
        newQuoteMap.put("transTypeName", "运输方式");
        newQuoteMap.put("client", "所属客户");
        newQuoteMap.put("vehicleTypeName", "车型名称");
        newQuoteMap.put("quotationPrice", "报价单价");
        newQuoteMap.put("quotationMileage", "报价公里数");
        return newQuoteMap;
    }

    /**
     * 开票申请
     *
     * @return
     */
    public Map<String, Object> getInvoiceApplyExportMap() {
        Map<String, Object> invoiceApplyMap = Maps.newLinkedHashMap();
        invoiceApplyMap.put("code", "开票申请号");
        invoiceApplyMap.put("invoiceId", "BMS支付申请号");
        invoiceApplyMap.put("client", "客户");
        invoiceApplyMap.put("customerName", "开票单位名称");
        invoiceApplyMap.put("customerName", "供方公司名称");
        invoiceApplyMap.put("sumMoney", "开票金额");
        invoiceApplyMap.put("chargeMoney", "扣款总金额");
        invoiceApplyMap.put("billNum", "账单数量");
        invoiceApplyMap.put("planReceiptDateStr", "计划收票时间");
        invoiceApplyMap.put("gmtCreateStr", "创建时间");
        invoiceApplyMap.put("registerDateStr", "登记时间");
        invoiceApplyMap.put("statusStr", "审核状态");
        invoiceApplyMap.put("auditDateStr", "审核时间");
        return invoiceApplyMap;
    }
}
